标签:RFC 6238

3 篇文章

平台指南

在线 TOTP 工具是怎么算验证码的?原理、实现与开源

用网页版 2FA 工具取码时,密钥有没有被传到服务器上?本文拆开在线 TOTP 工具的计算过程:Base32 怎么解码、30 秒时间窗口怎么划分、HMAC 与动态截断怎么凑出 6 位数字,为什么全程用浏览器自带的 Web Crypto 在本地算,以及我们把这套算法开源的理由与 npm 用法。

知识库

服务端和客户端怎么接入 TOTP 二次验证?Go、PHP、JS 三份示例代码

服务端接入以 golang 和 php 为例,客户端接入以 js 为例,三份完整的 TOTP 示例代码,展示密钥怎么生成、6 位动态码怎么算出来、服务端怎么校验用户输入。代码按 RFC 6238 实现,能看清时间戳、HMAC-SHA1 和动态截断这三步是怎么拼起来的,适合给自己的应用或网站加上动态口令验证。

TOTP 算法原理详解:30 秒验证码是怎么生成的

TOTP 用共享密钥和当前时间在本地算出 6 位动态验证码,断网也能出码。本文按 RFC 6238 拆开计算过程:时间因子、HMAC-SHA1、动态截断,并讲清服务端为什么容忍前后一个时间窗口、真正该保管的是密钥还是验证码,以及换机时怎么避免密钥丢失。